package com.atguigu.bigdata.spark.zzgcore.rdd.builder

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

/**
 * @Classname Spark01_RDD_Memory
 * @Description TODO
 * @Date 2023/9/19 16:28
 * @Author zhuzhenguo
 */
object Spark01_RDD_Memory_Par {
  def main(args: Array[String]): Unit = {

    // 准备环境,这个 *表示系统当前最大可用核数
    val sparkConf: SparkConf = new SparkConf().setMaster("local[*]").setAppName("RDD")
    sparkConf.set("spark.default.parallelism", "5")
    val sc = new SparkContext(sparkConf)
    // RDD并行度 & 分区
    // makeRDD方法可以传递第二个参数，这个参数表示分区的数量
    // 第二个参数可以不传递的，那么makeRDD方法会使用默认值：defaultParallelism（默认并行度）
    // 默认值就是 scheduler.conf.getInt("spark.default.parallelism", totalCores)
    // spark在默认情况下，从配置对象中获取配置参数：spark.default.parallelism
    // 如果取不到，那么使用totalCores属性，这个属性取值为当前运行环境的最大可用核数
//    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4), 2)
    val rdd: RDD[Int] = sc.makeRDD(List(1, 2, 3, 4))

    // 将处理的数据保存成分区文件
    rdd.saveAsTextFile("output")
    // 关闭环境
    sc.stop()
  }
}
